package com.lzdongrui.backend.service;

import java.util.List;
import com.lzdongrui.backend.domain.ApplyLeave;
import com.lzdongrui.backend.domain.dto.ApplyLeaveDTO;
import com.lzdongrui.backend.domain.vo.ApplyLeaveVO;
import com.lzdongrui.backend.domain.vo.BarChartVO;

/**
 * 请假申请Service接口
 * 
 * @author wyh
 * @date 2023-05-16
 */
public interface IApplyLeaveService 
{
    /**
     * 查询请假申请
     * 
     * @param id 请假申请主键
     * @return 请假申请
     */
    public ApplyLeave selectApplyLeaveById(Long id);

    /**
     * 查询请假申请列表
     * 
     * @param applyLeaveDTO 请假申请
     * @return 请假申请集合
     */
    public List<ApplyLeaveVO> selectApplyLeaveList(ApplyLeaveDTO applyLeaveDTO);

    /**
     * 新增请假申请
     * 
     * @param applyLeave 请假申请
     * @return 结果
     */
    public int insertApplyLeave(ApplyLeaveDTO applyLeave);

    /**
     * 修改请假申请
     * 
     * @param applyLeave 请假申请
     * @return 结果
     */
    public int updateApplyLeave(ApplyLeave applyLeave);

    /**
     * 批量删除请假申请
     * 
     * @param ids 需要删除的请假申请主键集合
     * @return 结果
     */
    public int deleteApplyLeaveByIds(Long[] ids);

    /**
     * 删除请假申请信息
     * 
     * @param id 请假申请主键
     * @return 结果
     */
    public int deleteApplyLeaveById(Long id);

    int auditLeave(ApplyLeaveDTO applyLeaveDTO);

    List<ApplyLeaveVO> selClientStuApplyLeave(ApplyLeaveDTO applyLeaveDTO);

    List<ApplyLeaveVO> selClientStuApplyLeaveLast(Long stuId);

    boolean checkStuLeaveTime(ApplyLeaveDTO applyLeave);

    ApplyLeave getExtendLeave(ApplyLeaveDTO applyLeave);

    List<ApplyLeaveVO> oldInfoList(ApplyLeaveDTO applyLeaveDTO);

    List<BarChartVO> BarChart(ApplyLeaveDTO applyLeaveDTO);
}
